package com.roads.engineering.service;

import com.roads.engineering.domain.summary.SummaryIpc;
import com.roads.engineering.domain.summary.SummaryRecord;
import com.roads.engineering.domain.summary.SummaryRecordUserVo;
import com.roads.engineering.domain.summary.SummaryVo;

import java.util.List;

/**
 * @ClassName ISummaryService
 * @Description 汇总service接口
 * @Author nhp
 * @Date 2022/5/5 0005 14:27
 * @Version 1.0.0
 **/
public interface ISummaryService {

    /**
     * 获取汇总记录
     *
     * @param summaryRecord 汇总记录
     * @return 汇总记录
     */
    SummaryRecord getSummaryRecord(SummaryRecord summaryRecord);

    /**
     * 根据机构编号，工期获取汇总用户集合
     *
     * @param institutionCode 机构编号
     * @param periodName 工期
     * @return 汇总用户集合
     */
    List<SummaryRecordUserVo> selectSummaryRecordUserList(String institutionCode, String periodName );

    /**
     * 查看汇总是否批复
     *
     * @param institutionCode 机构编号
     * @param periodName 工期
     * @return 是否批复
     */
    boolean getSummaryIsApprove(String institutionCode, String periodName);

    /**
     * 获取汇总批复记录
     *
     * @param institutionCode 机构编号
     * @param periodName 工期
     * @return 汇总记录
     */
    SummaryRecord getSummaryRecordByApprove(String institutionCode, String periodName);

    /**
     * 获取汇总记录最后汇总用户
     *
     * @param institutionCode 机构编号
     * @param periodName 工期
     * @return 汇总用户
     */
    String getSummaryLastUser(String institutionCode, String periodName);

    /**
     * 根据标段编号/工期/支付项目编号获取某支付项目
     *
     * @param institutionCode 标段编号
     * @param periodName 工期
     * @param userName 用户
     * @param itemCode 支付项目编号
     * @return 某支付项目
     */
    SummaryIpc getItemByBidAndPeriodAndItemCode(String institutionCode, String periodName, String userName, String itemCode);

    /**
     * 根据项目ID获取项目百章各期本期末完成金额
     *
     * @param projectId 项目ID
     * @return 百章项目各期值
     */
    List<SummaryIpc> getProjectHundredChaptersCurrentEndTotalByProject(Integer projectId);

    /**
     * 根据项目ID/用户获取项目百章各期本期末完成金额
     *
     * @param projectId 项目ID
     * @param userName 用户
     * @return 百章项目各期值
     */
    List<SummaryIpc> getProjectHundredChaptersCurrentEndTotalByProjectAndUser(Integer projectId, String userName);

    /**
     * 数据汇总
     *
     * @param model 汇总对象
     * @return 结果
     */
    int summary(SummaryVo model);

    /**
     * 查询当前登录用户在计量流程节点出现的次数
     * @param user 当前登录用户
     * @return 数量
     */
    int getCountWorkflowNodeUser(String user);

}
